// 导入api内的方法或者axios
import {findAll,saveOrUpdate,findCustomerById} from '@/api/customer.js'
import {findByCustomerId as findAddressByCId} from '@/api/address.js'
import {query as findOrderByCId} from '@/api/order.js'
import { Notification } from 'element-ui';
// 配置Vuex结构
export default {
  // vuex中的store分成模块来管理 需要在index.js中引入每一个Vuex模块进行配置 为了解决不同模块命名冲突的问题  将不同模块的namespaced 全部开启 之后 在不同的页面中再使用getters，actions，mutations，state的时候 需要根据不同的模块名来获取
  namespaced: true,

  state: {
    //后台总数据
    totalData:{},
    //顾客地址信息
    addressData:[],
    //订单信息
    orderData:[],
    CustomerData:{}
  },
  //对数据进行拆分
  getters:{
    //总条数
    total:state=>state.totalData.total,
    //每页的顾客信息
    customerData:state=>state.totalData.list
  },
  mutations: {
    changeTotalData(state,data){
      state.totalData=data;
    },
    changeAddressData(state,data){
      state.addressData=data;
    },
    changeOrderData(state,data){
      state.orderData=data;
    },
    changeCustomerData(state,data){
      state.CustomerData=data;
    }
  },
  actions: {
    //通过顾客id找详情信息
    findCustomerById({commit},payload){
      findCustomerById(payload).then(res=>{
        commit('changeCustomerData',res.data)
      })
    },
    //通过顾客id找订单
    async findOrderByCId({commit},payload){
      let res=await findOrderByCId(payload);
      //保存数据到仓库
      commit('changeOrderData',res.data)
    },
    /**
     * 通过顾客id找地址
     */
    async findAddressByCId({commit},payload){
      let res=await findAddressByCId(payload);
      //保存数据到仓库
      commit('changeAddressData',res.data)
    },
    /**
     * 查找顾客信息
     */
    //如果页面超出范围，需要处理
    findAll({commit},payload){
      findAll(payload).then(res=>{
        let max=Math.ceil(res.data.total/payload.pageSize)
        if(payload.page>max){
          payload.page=max;
          findAll(payload).then(res=>{
            commit('changeTotalData',res.data)
          })
          
        }else{
          commit('changeTotalData',res.data)
        }
      })
    },
    /**
     * 新增或修改顾客信息
     * 
     */
    async saveOrUpdate({dispatch},payload){
      //接受数据，发送请求 ，提示用户保存成功，处理page,分发findAll动作
      let res=await saveOrUpdate(payload.form);
      if(res.status===200){
        Notification({
          type:'success',
          title:'成功',
          message:'保存成功'
        })
        //查找数据 (区分是新增查找还是修改查找 如果是新增查找 找最后一页，如果是修改查找，找当前页)
        dispatch('findAll',payload.queryParams);
      }else{
        Notification({
          type:'error',
          title:'失败',
          message:'保存失败'
        })
      }
    },
  }
}